package com.ITArmy.dao;

import com.ITArmy.beans.Blog;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

public interface BlogMapper {
    /**
     * 删除
     *
     * @param bId bid
     * @return int
     */
    int deleteByPrimaryKey(Long bId);

    /**
     * 批量删除
     *
     * @param ids ids
     * @return int
     */
    int deleteManyBlogByIds(String[] ids);

    /**
     * 添加博客
     *
     * @param record record
     * @return int
     */
    int insert(Blog record);

    /**
     * 添加博客Selective
     *
     * @param record record
     * @return int
     */
    int insertSelective(Blog record);

    /**
     * 查找博客by bid
     *
     * @param bId bid
     * @return blog
     */
    Blog selectByPrimaryKey(Long bId);

    /**
     * 修改博客部分内容
     *
     * @param record record
     * @return int
     */
    int updateByPrimaryKeySelective(Blog record);

    /**
     * 修改博客全部内容
     *
     * @param record record
     * @return int
     */
    int updateByPrimaryKey(Blog record);

    /**
     * 遍历全部信息
     *
     * @return blogList
     */
    List<Blog> findAllBlog();

    /**
     * 通过标题模糊查找
     *
     * @param title title
     * @return blogList
     */
    List<Blog> findBlogByTitle(@Param("title") String title);

    /**
     * 通过类型查找
     *
     * @param tid tid
     * @return blogList
     */
    List<Blog> findBlogByType(Integer tid);

    /**
     * 设置为推荐
     *
     * @param id id
     * @return int
     */
    int recommend(@Param("id") Long id);

    /**
     * 取消推荐
     *
     * @param id id
     * @return int
     */
    int unrecommend(@Param("id") Long id);

    /**
     * 遍历推荐博客
     *
     * @return blogList
     */
    List<Blog> recommendList();

    /**
     * 遍历指定类型推荐博客
     *
     * @param tid tid
     * @return blogList
     */
    List<Blog> findRecommendByType(@Param("tid") Integer tid);

    /**
     * 用户收藏博客
     */
    int collectionBlog(@Param("uId") long uId, @Param("bId") long bId);

    /**
     * 用户点赞博客,使点赞量+1
     *
     * @param bId bid
     * @return int
     */
    int praiseBlog(Long bId);

    /**
     * 根据id显示用户发表的所有博客
     *
     * @param uId uid
     * @return blogList
     */
    List<Blog> selectPublishCount(@Param("uId") Long uId);

    //获取最新发布的10篇博客

    List<Blog> recommentTenBlog();

    int blogCount(long uid);
}